// --------------------------------------------------
// 动画
// @Author: steven.wjx
// @Date:   2020-03-05 13:17:50
// --------------------------------------------------
.bounce,
.flip,
.flash,
.shake,
.swing,
.wobble,
.ring {
    animation: 1s ease;
}

.fadein,
.fadeinT,
.fadeinR,
.fadeinB,
.fadeinL,
.bouncein,
.bounceinT,
.bounceinR,
.bounceinB,
.bounceinL,
.rotatein,
.rotateinLT,
.rotateinLB,
.rotateinRT,
.rotateinRB,
.flipin,
.flipinX,
.flipinY {
    animation: 1s ease-out backwards;
}

.fadeout,
.fadeoutT,
.fadeoutR,
.fadeoutB,
.fadeoutL,
.bounceout,
.bounceoutT,
.bounceoutR,
.bounceoutB,
.bounceoutL,
.rotateout,
.rotateoutLT,
.rotateoutLB,
.rotateoutRT,
.rotateoutRB,
.flipout,
.flipoutX,
.flipoutY {
    animation: 1s ease-in forwards;
}

/* 淡入 */
.fadein {
    animation-name: fadein;
}

/* 淡入-从上 */

.fadeinT {
    animation-name: fadeinT;
}

/* 淡入-从右 */

.fadeinR {
    animation-name: fadeinR;
}

/* 淡入-从下 */

.fadeinB {
    animation-name: fadeinB;
}

/* 淡入-从左 */

.fadeinL {
    animation-name: fadeinL;
}

/* 淡出 */

.fadeout {
    animation-name: fadeout;
}

/* 淡出-向上 */

.fadeoutT {
    animation-name: fadeoutT;
}

/* 淡出-向右 */

.fadeoutR {
    animation-name: fadeoutR;
}

/* 淡出-向下 */

.fadeoutB {
    animation-name: fadeoutB;
}

/* 淡出-向左 */

.fadeoutL {
    animation-name: fadeoutL;
}

/* 弹跳 */

.bounce {
    animation-name: bounce;
}

/* 弹入 */

.bouncein {
    animation-name: bouncein;
}

/* 弹入-从上 */

.bounceinT {
    animation-name: bounceinT;
}

/* 弹入-从右 */

.bounceinR {
    animation-name: bounceinR;
}

/* 弹入-从下 */

.bounceinB {
    animation-name: bounceinB;
}

/* 弹入-从左 */

.bounceinL {
    animation-name: bounceinL;
}

/* 弹出 */

.bounceout {
    animation-name: bounceout;
}

/* 弹出-向上 */

.bounceoutT {
    animation-name: bounceoutT;
}

/* 弹出-向右 */

.bounceoutR {
    animation-name: bounceoutR;
}

/* 弹出-向下 */

.bounceoutB {
    animation-name: bounceoutB;
}

/* 弹出-向左 */

.bounceoutL {
    animation-name: bounceoutL;
}

/* 转入 */

.rotatein {
    animation-name: rotatein;
}

/* 转入-从左上 */

.rotateinLT {
    animation-name: rotateinLT;
}

/* 转入-从左下 */

.rotateinLB {
    animation-name: rotateinLB;
}

/* 转入-从右上 */

.rotateinRT {
    animation-name: rotateinRT;
}

/* 转入-从右下*/

.rotateinRB {
    animation-name: rotateinRB;
}

/* 转出 */

.rotateout {
    animation-name: rotateout;
}

/* 转出-向左上 */

.rotateoutLT {
    animation-name: rotateoutLT;
}

/* 转出-向左下 */

.rotateoutLB {
    animation-name: rotateoutLB;
}

/* 转出-向右上 */

.rotateoutRT {
    animation-name: rotateoutRT;
}

/* 转出-向右下 */

.rotateoutRB {
    animation-name: rotateoutRB;
}

/* 翻转 */

.flip {
    animation-name: flip;
}

/* 翻入-X轴 */

.flipinX {
    animation-name: flipinX;
}

/* 翻入-Y轴 */

.flipin,
.flipinY {
    animation-name: flipinY;
}

/* 翻出-X轴 */

.flipoutX {
    animation-name: flipoutX;
}

/* 翻出-Y轴 */

.flipout,
.flipoutY {
    animation-name: flipoutY;
}

/* 闪烁 */

.flash {
    animation-name: flash;
}

/* 震颤 */

.shake {
    animation-name: shake;
}

/* 摇摆 */

.swing {
    animation-name: swing;
}

/* 摇晃 */

.wobble {
    animation-name: wobble;
}

/* 震铃 */

.ring {
    animation-name: ring;
}

/* define */

/* 淡入 */

@-webkit-keyframes fadein {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@-moz-keyframes fadein {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@-ms-keyframes fadein {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes fadein {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

/* 淡入-从上 */

@-webkit-keyframes fadeinT {
    0% {
        opacity: 0;
        -webkit-transform: translateY(-100px);
    }

    100% {
        opacity: 1;
        -webkit-transform: translateY(0);
    }
}

@-moz-keyframes fadeinT {
    0% {
        opacity: 0;
        -moz-transform: translateY(-100px);
    }

    100% {
        opacity: 1;
        -moz-transform: translateY(0);
    }
}

@-ms-keyframes fadeinT {
    0% {
        opacity: 0;
        -ms-transform: translateY(-100px);
    }

    100% {
        opacity: 1;
        -ms-transform: translateY(0);
    }
}

@keyframes fadeinT {
    0% {
        opacity: 0;
        transform: translateY(-100px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 淡入-从右 */

@-webkit-keyframes fadeinR {
    0% {
        opacity: 0;
        -webkit-transform: translateX(100px);
    }

    100% {
        opacity: 1;
        -webkit-transform: translateX(0);
    }
}

@-moz-keyframes fadeinR {
    0% {
        opacity: 0;
        -moz-transform: translateX(100px);
    }

    100% {
        opacity: 1;
        -moz-transform: translateX(0);
    }
}

@-ms-keyframes fadeinR {
    0% {
        opacity: 0;
        -ms-transform: translateX(100px);
    }

    100% {
        opacity: 1;
        -ms-transform: translateX(0);
    }
}

@keyframes fadeinR {
    0% {
        opacity: 0;
        transform: translateX(100px);
    }

    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

/* 淡入-从下 */

@-webkit-keyframes fadeinB {
    0% {
        opacity: 0;
        -webkit-transform: translateY(100px);
    }

    100% {
        opacity: 1;
        -webkit-transform: translateY(0);
    }
}

@-moz-keyframes fadeinB {
    0% {
        opacity: 0;
        -moz-transform: translateY(100px);
    }

    100% {
        opacity: 1;
        -moz-transform: translateY(0);
    }
}

@-ms-keyframes fadeinB {
    0% {
        opacity: 0;
        -ms-transform: translateY(100px);
    }

    100% {
        opacity: 1;
        -ms-transform: translateY(0);
    }
}

@keyframes fadeinB {
    0% {
        opacity: 0;
        transform: translateY(100px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 淡入-从左 */

@-webkit-keyframes fadeinL {
    0% {
        opacity: 0;
        -webkit-transform: translateX(-100px);
    }

    100% {
        opacity: 1;
        -webkit-transform: translateX(0);
    }
}

@-moz-keyframes fadeinL {
    0% {
        opacity: 0;
        -moz-transform: translateX(-100px);
    }

    100% {
        opacity: 1;
        -moz-transform: translateX(0);
    }
}

@-ms-keyframes fadeinL {
    0% {
        opacity: 0;
        -ms-transform: translateX(-100px);
    }

    100% {
        opacity: 1;
        -ms-transform: translateX(0);
    }
}

@keyframes fadeinL {
    0% {
        opacity: 0;
        transform: translateX(-100px);
    }

    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

/* 淡出 */

@-webkit-keyframes fadeout {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

@-moz-keyframes fadeout {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

@-ms-keyframes fadeout {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

@keyframes fadeout {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

/* 淡出-向上 */

@-webkit-keyframes fadeoutT {
    0% {
        opacity: 1;
        -webkit-transform: translateY(0);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateY(-100px);
    }
}

@-moz-keyframes fadeoutT {
    0% {
        opacity: 1;
        -moz-transform: translateY(0);
    }

    100% {
        opacity: 0;
        -moz-transform: translateY(-100px);
    }
}

@-ms-keyframes fadeoutT {
    0% {
        opacity: 1;
        -ms-transform: translateY(0);
    }

    100% {
        opacity: 0;
        -ms-transform: translateY(-100px);
    }
}

@keyframes fadeoutT {
    0% {
        opacity: 1;
        transform: translateY(0);
    }

    100% {
        opacity: 0;
        transform: translateY(-100px);
    }
}

/* 淡出-向右 */

@-webkit-keyframes fadeoutR {
    0% {
        opacity: 1;
        -webkit-transform: translateX(0);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateX(100px);
    }
}

@-moz-keyframes fadeoutR {
    0% {
        opacity: 1;
        -moz-transform: translateX(0);
    }

    100% {
        opacity: 0;
        -moz-transform: translateX(100px);
    }
}

@-ms-keyframes fadeoutR {
    0% {
        opacity: 1;
        -ms-transform: translateX(0);
    }

    100% {
        opacity: 0;
        -ms-transform: translateX(100px);
    }
}

@keyframes fadeoutR {
    0% {
        opacity: 1;
        transform: translateX(0);
    }

    100% {
        opacity: 0;
        transform: translateX(100px);
    }
}

/* 淡出-向下 */

@-webkit-keyframes fadeoutB {
    0% {
        opacity: 1;
        -webkit-transform: translateY(0);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateY(100px);
    }
}

@-moz-keyframes fadeoutB {
    0% {
        opacity: 1;
        -moz-transform: translateY(0);
    }

    100% {
        opacity: 0;
        -moz-transform: translateY(100px);
    }
}

@-ms-keyframes fadeoutB {
    0% {
        opacity: 1;
        -ms-transform: translateY(0);
    }

    100% {
        opacity: 0;
        -ms-transform: translateY(100px);
    }
}

@keyframes fadeoutB {
    0% {
        opacity: 1;
        transform: translateY(0);
    }

    100% {
        opacity: 0;
        transform: translateY(100px);
    }
}

/* 淡出-向左 */

@-webkit-keyframes fadeoutL {
    0% {
        opacity: 1;
        -webkit-transform: translateX(0);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateX(-100px);
    }
}

@-moz-keyframes fadeoutL {
    0% {
        opacity: 1;
        -moz-transform: translateX(0);
    }

    100% {
        opacity: 0;
        -moz-transform: translateX(-100px);
    }
}

@-ms-keyframes fadeoutL {
    0% {
        opacity: 1;
        -ms-transform: translateX(0);
    }

    100% {
        opacity: 0;
        -ms-transform: translateX(-100px);
    }
}

@keyframes fadeoutL {
    0% {
        opacity: 1;
        transform: translateX(0);
    }

    100% {
        opacity: 0;
        transform: translateX(-100px);
    }
}

/* 弹跳 */

@-webkit-keyframes bounce {

    0%,
    20%,
    50%,
    80%,
    100% {
        -webkit-transform: translateY(0);
    }

    40% {
        -webkit-transform: translateY(-30px);
    }

    60% {
        -webkit-transform: translateY(-15px);
    }
}

@-moz-keyframes bounce {

    0%,
    20%,
    50%,
    80%,
    100% {
        -moz-transform: translateY(0);
    }

    40% {
        -moz-transform: translateY(-30px);
    }

    60% {
        -moz-transform: translateY(-15px);
    }
}

@-ms-keyframes bounce {

    0%,
    20%,
    50%,
    80%,
    100% {
        -ms-transform: translateY(0);
    }

    40% {
        -ms-transform: translateY(-30px);
    }

    60% {
        -ms-transform: translateY(-15px);
    }
}

@keyframes bounce {

    0%,
    20%,
    50%,
    80%,
    100% {
        transform: translateY(0);
    }

    40% {
        transform: translateY(-30px);
    }

    60% {
        transform: translateY(-15px);
    }
}

/* 弹入 */

@-webkit-keyframes bouncein {
    0% {
        opacity: 0;
        -webkit-transform: scale(0.3);
    }

    50% {
        opacity: 1;
        -webkit-transform: scale(1.05);
    }

    70% {
        -webkit-transform: scale(0.9);
    }

    100% {
        -webkit-transform: scale(1);
    }
}

@-moz-keyframes bouncein {
    0% {
        opacity: 0;
        -moz-transform: scale(0.3);
    }

    50% {
        opacity: 1;
        -moz-transform: scale(1.05);
    }

    70% {
        -moz-transform: scale(0.9);
    }

    100% {
        -moz-transform: scale(1);
    }
}

@-ms-keyframes bouncein {
    0% {
        opacity: 0;
        -ms-transform: scale(0.3);
    }

    50% {
        opacity: 1;
        -ms-transform: scale(1.05);
    }

    70% {
        -ms-transform: scale(0.9);
    }

    100% {
        -ms-transform: scale(1);
    }
}

@keyframes bouncein {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }

    50% {
        opacity: 1;
        transform: scale(1.05);
    }

    70% {
        transform: scale(0.9);
    }

    100% {
        transform: scale(1);
    }
}

/* 弹入-从上 */

@-webkit-keyframes bounceinT {
    0% {
        opacity: 0;
        -webkit-transform: translateY(-100px);
    }

    60% {
        opacity: 1;
        -webkit-transform: translateY(30px);
    }

    80% {
        -webkit-transform: translateY(-10px);
    }

    100% {
        -webkit-transform: translateY(0);
    }
}

@-moz-keyframes bounceinT {
    0% {
        opacity: 0;
        -moz-transform: translateY(-100px);
    }

    60% {
        opacity: 1;
        -moz-transform: translateY(30px);
    }

    80% {
        -moz-transform: translateY(-10px);
    }

    100% {
        -moz-transform: translateY(0);
    }
}

@-ms-keyframes bounceinT {
    0% {
        opacity: 0;
        -ms-transform: translateY(-100px);
    }

    60% {
        opacity: 1;
        -ms-transform: translateY(30px);
    }

    80% {
        -ms-transform: translateY(-10px);
    }

    100% {
        -ms-transform: translateY(0);
    }
}

@keyframes bounceinT {
    0% {
        opacity: 0;
        transform: translateY(-100px);
    }

    60% {
        opacity: 1;
        transform: translateY(30px);
    }

    80% {
        transform: translateY(-10px);
    }

    100% {
        transform: translateY(0);
    }
}

/* 弹入-从右 */

@-webkit-keyframes bounceinR {
    0% {
        opacity: 0;
        -webkit-transform: translateX(100px);
    }

    60% {
        opacity: 1;
        -webkit-transform: translateX(-30px);
    }

    80% {
        -webkit-transform: translateX(10px);
    }

    100% {
        -webkit-transform: translateX(0);
    }
}

@-moz-keyframes bounceinR {
    0% {
        opacity: 0;
        -moz-transform: translateX(100px);
    }

    60% {
        opacity: 1;
        -moz-transform: translateX(-30px);
    }

    80% {
        -moz-transform: translateX(10px);
    }

    100% {
        -moz-transform: translateX(0);
    }
}

@-ms-keyframes bounceinR {
    0% {
        opacity: 0;
        -ms-transform: translateX(100px);
    }

    60% {
        opacity: 1;
        -ms-transform: translateX(-30px);
    }

    80% {
        -ms-transform: translateX(10px);
    }

    100% {
        -ms-transform: translateX(0);
    }
}

@keyframes bounceinR {
    0% {
        opacity: 0;
        transform: translateX(100px);
    }

    60% {
        opacity: 1;
        transform: translateX(-30px);
    }

    80% {
        transform: translateX(10px);
    }

    100% {
        transform: translateX(0);
    }
}

/* 弹入-从下 */

@-webkit-keyframes bounceinB {
    0% {
        opacity: 0;
        -webkit-transform: translateY(100px);
    }

    60% {
        opacity: 1;
        -webkit-transform: translateY(-30px);
    }

    80% {
        -webkit-transform: translateY(10px);
    }

    100% {
        -webkit-transform: translateY(0);
    }
}

@-moz-keyframes bounceinB {
    0% {
        opacity: 0;
        -moz-transform: translateY(100px);
    }

    60% {
        opacity: 1;
        -moz-transform: translateY(-30px);
    }

    80% {
        -moz-transform: translateY(10px);
    }

    100% {
        -moz-transform: translateY(0);
    }
}

@-ms-keyframes bounceinB {
    0% {
        opacity: 0;
        -ms-transform: translateY(100px);
    }

    60% {
        opacity: 1;
        -ms-transform: translateY(-30px);
    }

    80% {
        -ms-transform: translateY(10px);
    }

    100% {
        -ms-transform: translateY(0);
    }
}

@keyframes bounceinB {
    0% {
        opacity: 0;
        transform: translateY(100px);
    }

    60% {
        opacity: 1;
        transform: translateY(-30px);
    }

    80% {
        transform: translateY(10px);
    }

    100% {
        transform: translateY(0);
    }
}

/* 弹入-从左 */

@-webkit-keyframes bounceinL {
    0% {
        opacity: 0;
        -webkit-transform: translateX(-100px);
    }

    60% {
        opacity: 1;
        -webkit-transform: translateX(30px);
    }

    80% {
        -webkit-transform: translateX(-10px);
    }

    100% {
        -webkit-transform: translateX(0);
    }
}

@-moz-keyframes bounceinL {
    0% {
        opacity: 0;
        -moz-transform: translateX(-100px);
    }

    60% {
        opacity: 1;
        -moz-transform: translateX(30px);
    }

    80% {
        -moz-transform: translateX(-10px);
    }

    100% {
        -moz-transform: translateX(0);
    }
}

@-ms-keyframes bounceinL {
    0% {
        opacity: 0;
        -ms-transform: translateX(-100px);
    }

    60% {
        opacity: 1;
        -ms-transform: translateX(30px);
    }

    80% {
        -ms-transform: translateX(-10px);
    }

    100% {
        -ms-transform: translateX(0);
    }
}

@keyframes bounceinL {
    0% {
        opacity: 0;
        transform: translateX(-100px);
    }

    60% {
        opacity: 1;
        transform: translateX(30px);
    }

    80% {
        transform: translateX(-10px);
    }

    100% {
        transform: translateX(0);
    }
}

/* 弹出 */

@-webkit-keyframes bounceout {
    0% {
        -webkit-transform: scale(1);
    }

    25% {
        -webkit-transform: scale(0.95);
    }

    50% {
        opacity: 1;
        -webkit-transform: scale(1.1);
    }

    100% {
        opacity: 0;
        -webkit-transform: scale(0.3);
    }
}

@-moz-keyframes bounceout {
    0% {
        -moz-transform: scale(1);
    }

    25% {
        -moz-transform: scale(0.95);
    }

    50% {
        opacity: 1;
        -moz-transform: scale(1.1);
    }

    100% {
        opacity: 0;
        -moz-transform: scale(0.3);
    }
}

@-ms-keyframes bounceout {
    0% {
        -ms-transform: scale(1);
    }

    25% {
        -ms-transform: scale(0.95);
    }

    50% {
        opacity: 1;
        -ms-transform: scale(1.1);
    }

    100% {
        opacity: 0;
        -ms-transform: scale(0.3);
    }
}

@keyframes bounceout {
    0% {
        transform: scale(1);
    }

    25% {
        transform: scale(0.95);
    }

    50% {
        opacity: 1;
        transform: scale(1.1);
    }

    100% {
        opacity: 0;
        transform: scale(0.3);
    }
}

/* 弹出-向上*/

@-webkit-keyframes bounceoutT {
    0% {
        -webkit-transform: translateY(0);
    }

    20% {
        opacity: 1;
        -webkit-transform: translateY(20px);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateY(-100px);
    }
}

@-moz-keyframes bounceoutT {
    0% {
        -moz-transform: translateY(0);
    }

    20% {
        opacity: 1;
        -moz-transform: translateY(20px);
    }

    100% {
        opacity: 0;
        -moz-transform: translateY(-100px);
    }
}

@-ms-keyframes bounceoutT {
    0% {
        -ms-transform: translateY(0);
    }

    20% {
        opacity: 1;
        -ms-transform: translateY(20px);
    }

    100% {
        opacity: 0;
        -ms-transform: translateY(-100px);
    }
}

@keyframes bounceoutT {
    0% {
        transform: translateY(0);
    }

    20% {
        opacity: 1;
        transform: translateY(20px);
    }

    100% {
        opacity: 0;
        transform: translateY(-100px);
    }
}

/* 弹出-向右*/

@-webkit-keyframes bounceoutR {
    0% {
        -webkit-transform: translateX(0);
    }

    20% {
        opacity: 1;
        -webkit-transform: translateX(-20px);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateX(100px);
    }
}

@-moz-keyframes bounceoutR {
    0% {
        -moz-transform: translateX(0);
    }

    20% {
        opacity: 1;
        -moz-transform: translateX(-20px);
    }

    100% {
        opacity: 0;
        -moz-transform: translateX(100px);
    }
}

@-ms-keyframes bounceoutR {
    0% {
        -ms-transform: translateX(0);
    }

    20% {
        opacity: 1;
        -ms-transform: translateX(-20px);
    }

    100% {
        opacity: 0;
        -ms-transform: translateX(100px);
    }
}

@keyframes bounceoutR {
    0% {
        transform: translateX(0);
    }

    20% {
        opacity: 1;
        transform: translateX(-20px);
    }

    100% {
        opacity: 0;
        transform: translateX(100px);
    }
}

/* 弹出-向下 */

@-webkit-keyframes bounceoutB {
    0% {
        -webkit-transform: translateY(0);
    }

    20% {
        opacity: 1;
        -webkit-transform: translateY(-20px);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateY(100px);
    }
}

@-moz-keyframes bounceoutB {
    0% {
        -moz-transform: translateY(0);
    }

    20% {
        opacity: 1;
        -moz-transform: translateY(-20px);
    }

    100% {
        opacity: 0;
        -moz-transform: translateY(100px);
    }
}

@-ms-keyframes bounceoutB {
    0% {
        -ms-transform: translateY(0);
    }

    20% {
        opacity: 1;
        -ms-transform: translateY(-20px);
    }

    100% {
        opacity: 0;
        -ms-transform: translateY(100px);
    }
}

@keyframes bounceoutB {
    0% {
        transform: translateY(0);
    }

    20% {
        opacity: 1;
        transform: translateY(-20px);
    }

    100% {
        opacity: 0;
        transform: translateY(100px);
    }
}

/* 弹出-向左 */

@-webkit-keyframes bounceoutL {
    0% {
        -webkit-transform: translateX(0);
    }

    20% {
        opacity: 1;
        -webkit-transform: translateX(20px);
    }

    100% {
        opacity: 0;
        -webkit-transform: translateX(-100px);
    }
}

@-moz-keyframes bounceoutL {
    0% {
        -moz-transform: translateX(0);
    }

    20% {
        opacity: 1;
        -moz-transform: translateX(20px);
    }

    100% {
        opacity: 0;
        -moz-transform: translateX(-100px);
    }
}

@-ms-keyframes bounceoutL {
    0% {
        -ms-transform: translateX(0);
    }

    20% {
        opacity: 1;
        -ms-transform: translateX(20px);
    }

    100% {
        opacity: 0;
        -ms-transform: translateX(-100px);
    }
}

@keyframes bounceoutL {
    0% {
        transform: translateX(0);
    }

    20% {
        opacity: 1;
        transform: translateX(20px);
    }

    100% {
        opacity: 0;
        transform: translateX(-200px);
    }
}

/* 转入 */

@-webkit-keyframes rotatein {
    0% {
        opacity: 0;
        -webkit-transform: rotate(-200deg);
    }

    100% {
        opacity: 1;
        -webkit-transform: rotate(0);
    }
}

@-moz-keyframes rotatein {
    0% {
        opacity: 0;
        -moz-transform: rotate(-200deg);
    }

    100% {
        opacity: 1;
        -moz-transform: rotate(0);
    }
}

@-ms-keyframes rotatein {
    0% {
        opacity: 0;
        -ms-transform: rotate(-200deg);
    }

    100% {
        opacity: 1;
        -ms-transform: rotate(0);
    }
}

@keyframes rotatein {
    0% {
        opacity: 0;
        transform: rotate(-200deg);
    }

    100% {
        opacity: 1;
        transform: rotate(0);
    }
}

/* 转入-从左上 */

@-webkit-keyframes rotateinLT {
    0% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }
}

@-moz-keyframes rotateinLT {
    0% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }
}

@-ms-keyframes rotateinLT {
    0% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }
}

@keyframes rotateinLT {
    0% {
        transform-origin: left bottom;
        transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        transform-origin: left bottom;
        transform: rotate(0);
        opacity: 1;
    }
}

/* 转入-从左下 */

@-webkit-keyframes rotateinLB {
    0% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }
}

@-moz-keyframes rotateinLB {
    0% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }
}

@-ms-keyframes rotateinLB {
    0% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }
}

@keyframes rotateinLB {
    0% {
        transform-origin: left bottom;
        transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        transform-origin: left bottom;
        transform: rotate(0);
        opacity: 1;
    }
}

/* 转入-从右上 */

@-webkit-keyframes rotateinRT {
    0% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }
}

@-moz-keyframes rotateinRT {
    0% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }
}

@-ms-keyframes rotateinRT {
    0% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }
}

@keyframes rotateinRT {
    0% {
        transform-origin: right bottom;
        transform: rotate(90deg);
        opacity: 0;
    }

    100% {
        transform-origin: right bottom;
        transform: rotate(0);
        opacity: 1;
    }
}

/* 转入-从右下*/

@-webkit-keyframes rotateinRB {
    0% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }
}

@-moz-keyframes rotateinRB {
    0% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }
}

@-ms-keyframes rotateinRB {
    0% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }
}

@keyframes rotateinRB {
    0% {
        transform-origin: right bottom;
        transform: rotate(-90deg);
        opacity: 0;
    }

    100% {
        transform-origin: right bottom;
        transform: rotate(0);
        opacity: 1;
    }
}

/* 转出 */

@-webkit-keyframes rotateout {
    0% {
        -webkit-transform-origin: center center;
        -webkit-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -webkit-transform-origin: center center;
        -webkit-transform: rotate(200deg);
        opacity: 0;
    }
}

@-moz-keyframes rotateout {
    0% {
        -moz-transform-origin: center center;
        -moz-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -moz-transform-origin: center center;
        -moz-transform: rotate(200deg);
        opacity: 0;
    }
}

@-ms-keyframes rotateout {
    0% {
        -ms-transform-origin: center center;
        -ms-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -ms-transform-origin: center center;
        -ms-transform: rotate(200deg);
        opacity: 0;
    }
}

@keyframes rotateout {
    0% {
        transform-origin: center center;
        transform: rotate(0);
        opacity: 1;
    }

    100% {
        transform-origin: center center;
        transform: rotate(200deg);
        opacity: 0;
    }
}

/* 转出-向左上 */

@-webkit-keyframes rotateoutLT {
    0% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(-90deg);
        opacity: 0;
    }
}

@-moz-keyframes rotateoutLT {
    0% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(-90deg);
        opacity: 0;
    }
}

@-ms-keyframes rotateoutLT {
    0% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(-90deg);
        opacity: 0;
    }
}

@keyframes rotateoutLT {
    0% {
        transform-origin: left bottom;
        transform: rotate(0);
        opacity: 1;
    }

    100% {
        transform-origin: left bottom;
        transform: rotate(-90deg);
        opacity: 0;
    }
}

/* 转出-向左下 */

@-webkit-keyframes rotateoutLB {
    0% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -webkit-transform-origin: left bottom;
        -webkit-transform: rotate(90deg);
        opacity: 0;
    }
}

@-moz-keyframes rotateoutLB {
    0% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -moz-transform-origin: left bottom;
        -moz-transform: rotate(90deg);
        opacity: 0;
    }
}

@-ms-keyframes rotateoutLB {
    0% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -ms-transform-origin: left bottom;
        -ms-transform: rotate(90deg);
        opacity: 0;
    }
}

@keyframes rotateoutLB {
    0% {
        transform-origin: left bottom;
        transform: rotate(0);
        opacity: 1;
    }

    100% {
        transform-origin: left bottom;
        transform: rotate(90deg);
        opacity: 0;
    }
}

/* 转出-向右上 */

@-webkit-keyframes rotateoutRT {
    0% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(90deg);
        opacity: 0;
    }
}

@-moz-keyframes rotateoutRT {
    0% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(90deg);
        opacity: 0;
    }
}

@-ms-keyframes rotateoutRT {
    0% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(90deg);
        opacity: 0;
    }
}

@keyframes rotateoutRT {
    0% {
        transform-origin: right bottom;
        transform: rotate(0);
        opacity: 1;
    }

    100% {
        transform-origin: right bottom;
        transform: rotate(90deg);
        opacity: 0;
    }
}

/* 转出-向右下 */

@-webkit-keyframes rotateoutRB {
    0% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -webkit-transform-origin: right bottom;
        -webkit-transform: rotate(-90deg);
        opacity: 0;
    }
}

@-moz-keyframes rotateoutRB {
    0% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -moz-transform-origin: right bottom;
        -moz-transform: rotate(-90deg);
        opacity: 0;
    }
}

@-ms-keyframes rotateoutRB {
    0% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(0);
        opacity: 1;
    }

    100% {
        -ms-transform-origin: right bottom;
        -ms-transform: rotate(-90deg);
        opacity: 0;
    }
}

@keyframes rotateoutRB {
    0% {
        transform-origin: right bottom;
        transform: rotate(0);
        opacity: 1;
    }

    100% {
        transform-origin: right bottom;
        transform: rotate(-90deg);
        opacity: 0;
    }
}

/* 翻转 */

@-webkit-keyframes flip {
    0% {
        -webkit-transform: perspective(400px) rotateY(0);
        -webkit-animation-timing-function: ease-out;
    }

    40% {
        -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
        -webkit-animation-timing-function: ease-out;
    }

    50% {
        -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
        -webkit-animation-timing-function: ease-in;
    }

    80% {
        -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
        -webkit-animation-timing-function: ease-in;
    }

    100% {
        -webkit-transform: perspective(400px) scale(1);
        -webkit-animation-timing-function: ease-in;
    }
}

@-moz-keyframes flip {
    0% {
        -moz-transform: perspective(400px) rotateY(0);
        -moz-animation-timing-function: ease-out;
    }

    40% {
        -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
        -moz-animation-timing-function: ease-out;
    }

    50% {
        -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
        -moz-animation-timing-function: ease-in;
    }

    80% {
        -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
        -moz-animation-timing-function: ease-in;
    }

    100% {
        -moz-transform: perspective(400px) scale(1);
        -moz-animation-timing-function: ease-in;
    }
}

@-ms-keyframes flip {
    0% {
        -ms-transform: perspective(400px) rotateY(0);
        -ms-animation-timing-function: ease-out;
    }

    40% {
        -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
        -ms-animation-timing-function: ease-out;
    }

    50% {
        -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
        -ms-animation-timing-function: ease-in;
    }

    80% {
        -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
        -ms-animation-timing-function: ease-in;
    }

    100% {
        -ms-transform: perspective(400px) scale(1);
        -ms-animation-timing-function: ease-in;
    }
}

@keyframes flip {
    0% {
        transform: perspective(400px) rotateY(0);
        animation-timing-function: ease-out;
    }

    40% {
        transform: perspective(400px) translateZ(150px) rotateY(170deg);
        animation-timing-function: ease-out;
    }

    50% {
        transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
        animation-timing-function: ease-in;
    }

    80% {
        transform: perspective(400px) rotateY(360deg) scale(0.95);
        animation-timing-function: ease-in;
    }

    100% {
        transform: perspective(400px) scale(1);
        animation-timing-function: ease-in;
    }
}

/* 翻入-X轴 */

@-webkit-keyframes flipinX {
    0% {
        -webkit-transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }

    40% {
        -webkit-transform: perspective(400px) rotateX(-10deg);
    }

    70% {
        -webkit-transform: perspective(400px) rotateX(10deg);
    }

    100% {
        -webkit-transform: perspective(400px) rotateX(0);
        opacity: 1;
    }
}

@-moz-keyframes flipinX {
    0% {
        -moz-transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }

    40% {
        -moz-transform: perspective(400px) rotateX(-10deg);
    }

    70% {
        -moz-transform: perspective(400px) rotateX(10deg);
    }

    100% {
        -moz-transform: perspective(400px) rotateX(0);
        opacity: 1;
    }
}

@-ms-keyframes flipinX {
    0% {
        -ms-transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }

    40% {
        -ms-transform: perspective(400px) rotateX(-10deg);
    }

    70% {
        -ms-transform: perspective(400px) rotateX(10deg);
    }

    100% {
        -ms-transform: perspective(400px) rotateX(0);
        opacity: 1;
    }
}

@keyframes flipinX {
    0% {
        transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }

    40% {
        transform: perspective(400px) rotateX(-10deg);
    }

    70% {
        transform: perspective(400px) rotateX(10deg);
    }

    100% {
        transform: perspective(400px) rotateX(0);
        opacity: 1;
    }
}

/* 翻入-Y轴 */

@-webkit-keyframes flipinY {
    0% {
        -webkit-transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }

    40% {
        -webkit-transform: perspective(400px) rotateY(-10deg);
    }

    70% {
        -webkit-transform: perspective(400px) rotateY(10deg);
    }

    100% {
        -webkit-transform: perspective(400px) rotateY(0);
        opacity: 1;
    }
}

@-moz-keyframes flipinY {
    0% {
        -moz-transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }

    40% {
        -moz-transform: perspective(400px) rotateY(-10deg);
    }

    70% {
        -moz-transform: perspective(400px) rotateY(10deg);
    }

    100% {
        -moz-transform: perspective(400px) rotateY(0);
        opacity: 1;
    }
}

@-ms-keyframes flipinY {
    0% {
        -ms-transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }

    40% {
        -ms-transform: perspective(400px) rotateY(-10deg);
    }

    70% {
        -ms-transform: perspective(400px) rotateY(10deg);
    }

    100% {
        -ms-transform: perspective(400px) rotateY(0);
        opacity: 1;
    }
}

@keyframes flipinY {
    0% {
        transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }

    40% {
        transform: perspective(400px) rotateY(-10deg);
    }

    70% {
        transform: perspective(400px) rotateY(10deg);
    }

    100% {
        transform: perspective(400px) rotateY(0);
        opacity: 1;
    }
}

/* 翻出-X轴 */

@-webkit-keyframes flipoutX {
    0% {
        -webkit-transform: perspective(400px) rotateX(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }
}

@-moz-keyframes flipoutX {
    0% {
        -moz-transform: perspective(400px) rotateX(0);
        opacity: 1;
    }

    100% {
        -moz-transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }
}

@-ms-keyframes flipoutX {
    0% {
        -ms-transform: perspective(400px) rotateX(0);
        opacity: 1;
    }

    100% {
        -ms-transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }
}

@keyframes flipoutX {
    0% {
        transform: perspective(400px) rotateX(0);
        opacity: 1;
    }

    100% {
        transform: perspective(400px) rotateX(90deg);
        opacity: 0;
    }
}

/* 翻出-Y轴 */

@-webkit-keyframes flipoutY {
    0% {
        -webkit-transform: perspective(400px) rotateY(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }
}

@-moz-keyframes flipoutY {
    0% {
        -moz-transform: perspective(400px) rotateY(0);
        opacity: 1;
    }

    100% {
        -moz-transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }
}

@-ms-keyframes flipoutY {
    0% {
        -ms-transform: perspective(400px) rotateY(0);
        opacity: 1;
    }

    100% {
        -ms-transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }
}

@keyframes flipoutY {
    0% {
        transform: perspective(400px) rotateY(0);
        opacity: 1;
    }

    100% {
        transform: perspective(400px) rotateY(90deg);
        opacity: 0;
    }
}

/* 闪烁 */

@-webkit-keyframes flash {

    0%,
    50%,
    100% {
        opacity: 1;
    }

    25%,
    75% {
        opacity: 0;
    }
}

@-moz-keyframes flash {

    0%,
    50%,
    100% {
        opacity: 1;
    }

    25%,
    75% {
        opacity: 0;
    }
}

@-ms-keyframes flash {

    0%,
    50%,
    100% {
        opacity: 1;
    }

    25%,
    75% {
        opacity: 0;
    }
}

@keyframes flash {

    0%,
    50%,
    100% {
        opacity: 1;
    }

    25%,
    75% {
        opacity: 0;
    }
}

/* 震颤 */

@-webkit-keyframes shake {

    0%,
    100% {
        -webkit-transform: translateX(0);
    }

    10%,
    30%,
    50%,
    70%,
    90% {
        -webkit-transform: translateX(-10px);
    }

    20%,
    40%,
    60%,
    80% {
        -webkit-transform: translateX(10px);
    }
}

@-moz-keyframes shake {

    0%,
    100% {
        -moz-transform: translateX(0);
    }

    10%,
    30%,
    50%,
    70%,
    90% {
        -moz-transform: translateX(-10px);
    }

    20%,
    40%,
    60%,
    80% {
        -moz-transform: translateX(10px);
    }
}

@-ms-keyframes shake {

    0%,
    100% {
        -ms-transform: translateX(0);
    }

    10%,
    30%,
    50%,
    70%,
    90% {
        -ms-transform: translateX(-10px);
    }

    20%,
    40%,
    60%,
    80% {
        -ms-transform: translateX(10px);
    }
}

@keyframes shake {

    0%,
    100% {
        transform: translateX(0);
    }

    10%,
    30%,
    50%,
    70%,
    90% {
        transform: translateX(-10px);
    }

    20%,
    40%,
    60%,
    80% {
        transform: translateX(10px);
    }
}

/* 摇摆 */

@-webkit-keyframes swing {
    20% {
        -webkit-transform: rotate(15deg);
    }

    40% {
        -webkit-transform: rotate(-10deg);
    }

    60% {
        -webkit-transform: rotate(5deg);
    }

    80% {
        -webkit-transform: rotate(-5deg);
    }

    100% {
        -webkit-transform: rotate(0);
    }
}

@-moz-keyframes swing {
    20% {
        -moz-transform: rotate(15deg);
    }

    40% {
        -moz-transform: rotate(-10deg);
    }

    60% {
        -moz-transform: rotate(5deg);
    }

    80% {
        -moz-transform: rotate(-5deg);
    }

    100% {
        -moz-transform: rotate(0);
    }
}

@-ms-keyframes swing {
    20% {
        -ms-transform: rotate(15deg);
    }

    40% {
        -ms-transform: rotate(-10deg);
    }

    60% {
        -ms-transform: rotate(5deg);
    }

    80% {
        -ms-transform: rotate(-5deg);
    }

    100% {
        -ms-transform: rotate(0);
    }
}

@keyframes swing {
    20% {
        transform: rotate(15deg);
    }

    40% {
        transform: rotate(-10deg);
    }

    60% {
        transform: rotate(5deg);
    }

    80% {
        transform: rotate(-5deg);
    }

    100% {
        transform: rotate(0);
    }
}

/* 摇晃 */

@-webkit-keyframes wobble {
    0% {
        -webkit-transform: translateX(0);
    }

    15% {
        -webkit-transform: translateX(-100px) rotate(-5deg);
    }

    30% {
        -webkit-transform: translateX(80px) rotate(3deg);
    }

    45% {
        -webkit-transform: translateX(-65px) rotate(-3deg);
    }

    60% {
        -webkit-transform: translateX(40px) rotate(2deg);
    }

    75% {
        -webkit-transform: translateX(-20px) rotate(-1deg);
    }

    100% {
        -webkit-transform: translateX(0);
    }
}

@-moz-keyframes wobble {
    0% {
        -moz-transform: translateX(0);
    }

    15% {
        -moz-transform: translateX(-100px) rotate(-5deg);
    }

    30% {
        -moz-transform: translateX(80px) rotate(3deg);
    }

    45% {
        -moz-transform: translateX(-65px) rotate(-3deg);
    }

    60% {
        -moz-transform: translateX(40px) rotate(2deg);
    }

    75% {
        -moz-transform: translateX(-20px) rotate(-1deg);
    }

    100% {
        -moz-transform: translateX(0);
    }
}

@-ms-keyframes wobble {
    0% {
        -ms-transform: translateX(0);
    }

    15% {
        -ms-transform: translateX(-100px) rotate(-5deg);
    }

    30% {
        -ms-transform: translateX(80px) rotate(3deg);
    }

    45% {
        -ms-transform: translateX(-65px) rotate(-3deg);
    }

    60% {
        -ms-transform: translateX(40px) rotate(2deg);
    }

    75% {
        -ms-transform: translateX(-20px) rotate(-1deg);
    }

    100% {
        -ms-transform: translateX(0);
    }
}

@keyframes wobble {
    0% {
        transform: translateX(0);
    }

    15% {
        transform: translateX(-100px) rotate(-5deg);
    }

    30% {
        transform: translateX(80px) rotate(3deg);
    }

    45% {
        transform: translateX(-65px) rotate(-3deg);
    }

    60% {
        transform: translateX(40px) rotate(2deg);
    }

    75% {
        transform: translateX(-20px) rotate(-1deg);
    }

    100% {
        transform: translateX(0);
    }
}

/* 震铃 */

@-webkit-keyframes ring {
    0% {
        -webkit-transform: scale(1);
    }

    10%,
    20% {
        -webkit-transform: scale(0.9) rotate(-3deg);
    }

    30%,
    50%,
    70%,
    90% {
        -webkit-transform: scale(1.1) rotate(3deg);
    }

    40%,
    60%,
    80% {
        -webkit-transform: scale(1.1) rotate(-3deg);
    }

    100% {
        -webkit-transform: scale(1) rotate(0);
    }
}

@-moz-keyframes ring {
    0% {
        -moz-transform: scale(1);
    }

    10%,
    20% {
        -moz-transform: scale(0.9) rotate(-3deg);
    }

    30%,
    50%,
    70%,
    90% {
        -moz-transform: scale(1.1) rotate(3deg);
    }

    40%,
    60%,
    80% {
        -moz-transform: scale(1.1) rotate(-3deg);
    }

    100% {
        -moz-transform: scale(1) rotate(0);
    }
}

@-ms-keyframes ring {
    0% {
        -ms-transform: scale(1);
    }

    10%,
    20% {
        -ms-transform: scale(0.9) rotate(-3deg);
    }

    30%,
    50%,
    70%,
    90% {
        -ms-transform: scale(1.1) rotate(3deg);
    }

    40%,
    60%,
    80% {
        -ms-transform: scale(1.1) rotate(-3deg);
    }

    100% {
        -ms-transform: scale(1) rotate(0);
    }
}

@keyframes ring {
    0% {
        transform: scale(1);
    }

    10%,
    20% {
        transform: scale(0.9) rotate(-3deg);
    }

    30%,
    50%,
    70%,
    90% {
        transform: scale(1.1) rotate(3deg);
    }

    40%,
    60%,
    80% {
        transform: scale(1.1) rotate(-3deg);
    }

    100% {
        transform: scale(1) rotate(0);
    }
}